package com.briup.cms.exception;


import com.briup.cms.utils.Message;
import com.briup.cms.utils.MessageStatus;
import com.briup.cms.utils.MessageUtil;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * @Description 全局异常处理类，简化web层中每个方法中的trycatch语句。当web层方法抛出异常时，全局异常处理类实现
 *               处理异常： 1，打印在控制台，2.前端返回一个错误json字符串
 * @Author lining
 * @Date 2021/7/16 16:18
 * @Version 1.0.0
 */
@RestControllerAdvice
public class GobalExceptionhandler {
    //对所有异常进行处理
    @ExceptionHandler(Exception.class)
    public Message handlerException(Exception e){
        //1.打印异常信息
        e.printStackTrace();
        //2.返回错误信息的json字符串

        //如果是我们自定义的异常信息，直接返回异常信息作为响应内容
        if(e instanceof CustomerException){
            CustomerException exception = (CustomerException) e;
            return MessageUtil.error(exception.getMessageStatus());
        }
        //如果是运行时异常 ，希望通过固定字符串返回
        return  MessageUtil.error(MessageStatus.INTERFACE_INNER_INVOKE_ERROR);
    }
}
